<?php

/**
 * Jugador form.
 *
 * @package    ehockey
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class JugadorForm extends BaseJugadorForm
{
	public function configure()
	{
		unset($this['tarjetasVerdes']);
		unset($this['tarjetasAmarillas']);
		$culture = sfContext::getInstance()->getUser()->getCulture();
		$years = range(1900, date('Y'));
		$date_config = array('years' => array_combine($years, $years), 'culture' => $culture);
		$this->widgetSchema['fecha_nacimiento'] = new sfWidgetFormJQueryDate(array('date_widget' => new sfWidgetFormI18nDate($date_config, array('class' => 'date')), 'culture' => $culture));
		$this->widgetSchema['fecha_alta'] = new sfWidgetFormJQueryDate(array('date_widget' => new sfWidgetFormI18nDate($date_config, array('class' => 'date')), 'culture' => $culture));

		$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
			new SectorDeEquiposEnLosQueJuegaValidator(array(), array('invalid' => 'El jugador pertenece a algun equipo que no se corresponde con su sector.')),
			new NumeroYTipoDeDocumentoValidator(array(), array('invalid' => 'El numero de documento esta repetido.'))
		)));
	}

}

class SectorDeEquiposEnLosQueJuegaValidator extends sfValidatorBase
{
	protected function doClean($value)
	{
		$jugador_id = $value['id'];
		if ($jugador_id){
			$jugador = JugadorTable::getInstance()->find($jugador_id);
			$equiposDeJugador = $jugador->getEquiposDeJugador();
			foreach ($equiposDeJugador as $jugadorDeEquipo){
				$equipo = $jugadorDeEquipo->getEquipo();
				if ($equipo->getSector() != $value['sector']){
					throw new sfValidatorError($this, 'invalid', array('value' => $value));
				}
			}
		}
		return $value;
	}

}